public class test1 {
    //力扣 746.最小花费爬楼梯
    public int minCostClimbingStairs(int[] cost) {
        //创建dp表
        //初始化
        //填表
        //返回值
        int n = cost.length;
        int[] dp = new int[n+1];
        //可以省略，因为默认为0
        dp[0] = 0;dp[1] = 0;

        for(int i = 2;i<=n;i++){
            dp[i] = Math.min((dp[i - 2] + cost[i - 2]), (dp[i - 1] + cost[i - 1]));
        }
        return dp[n];
    }

    public int minCostClimbingStairs2(int[] cost) {
        //创建dp表
        //初始化
        //填表
        //返回值
        int n = cost.length;
        int[] dp = new int[n];
        dp[n-1] = cost[n-1];dp[n-2] = cost[n-2];

        for(int i = n-3;i>=0;i--){
            dp[i] = Math.min((dp[i + 2] + cost[i]), (dp[i + 1] + cost[i]));
        }
        return Math.min(dp[0], dp[1]);
    }
}
